{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "$\\newcommand\\E{{\\mathbf E}}$\n", "$\\newcommand\\indi[1]{{\\mathbf 1}_{\\displaystyle #1}}$\n", "$\\newcommand\\inde[1]{{\\mathbf 1}_{\\displaystyle\\left\\{ #1 \\right\\}}}$\n", "$\\newcommand{\\ind}{\\inde}$\n", "$\\newcommand\\P{{\\mathbf P}}$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Un test d'équirépartition" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import math\n", "import random\n", "import matplotlib.pyplot as plt\n", "import pandas as pd" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Etude par simulation" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "On commence par construire un test d'équirpartition d'une suite de\n", "$100$ tirages à pile ou face.\n", "\n", "On simule des tirages à pile ou face\n", "répétés. A partir de ce tirage on calcule le nombre de pile\n", "consécutifs maximum dans le vecteur." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "def tirage_pf(n,p):\n", " # Effectue n tirage a Pile (P) ou face (F) (1/2,1/2)\n", " X=\"\"\n", " for i in range(n):\n", " U=random.random()\n", " # on rajoute un pile ou un face avec proba (1/2,1/2)\n", " \n", " ###### A vous de jouer .....\n", " return X\n", "\n", "def max_length(U):\n", "# Calcule le nombre maximum de P consecutifs\n", "# dans la suite U\n", " MAX=0;N=0;\n", " for n in range(len(U)):\n", " # nombre maximum de P consecutifs\n", " \n", " ###### A vous de jouer .....\n", " \n", " return MAX" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Question 1" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ " Faire $1000$ tirages du nombre maximum de $P$ et en tracer un\n", " histogramme. On calcule par simulation une approximation de la loi\n", " du nombre maximum de piles consecutifs (un histogramme d'un grand\n", " nombre de tirages i.i.d.)." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "def main_1():\n", " p=1.0/2.0\n", " # On teste cette fonction avec N=20\n", " U=tirage_pf(20,p)# 20 tirages a pile ou face 1/2,1/2\n", " max_length(U)# nombre maximum de P consecutifs\n", "\n", " # On effectue 1000 tirages avec N=100\n", " N=100\n", " Taille=100000 # nbre de simulation\n", " X=np.zeros(Taille)\n", " for i in range(Taille):\n", " # on réalise en échantillon selon la loi \n", " # du nombre maximum de P consecutifs\n", " \n", " ###### A vous de jouer .....\n", " \n", " # On fabrique l'histogramme \n", " histo=np.zeros(21);\n", " for i in range(21):\n", " histo[i]=np.size(np.where(X==i))/(1.0*Taille)\n", " # On trace cet histogramme\n", " plt.bar(range(21), histo[0:21])\n", " plt.xlabel('Loi de la longueur maximale pour 10 000 simulation de longueur 100')" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "main_1()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Question 2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ " Montrer que le nombre de piles successifs jusqu'à l'instant courant\n", " est une chaîne de Markov à valeurs dans ${\\mathbf N}$ de matrice de\n", " transition $P(x,x+1)=1/2$, $P(x,0)=1/2$. Simuler et tracer de\n", " trajectoires de cette chaîne." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "def trajectoire(U):\n", "# On calcule la trajectoire de X\n", "# à partir d'un tirage U\n", " X=np.zeros(len(U)+1)\n", " val=0;\n", " for n in range(len(U)):\n", " # on rajoute un si on voit un pile\n", " # on revient en zéro sinon\n", " \n", " ###### A vous de jouer .....\n", " return X;\n", "\n", "def main_2():\n", " N=100\n", " p=1.0/2.0 \n", "\n", " # On trace une trajectoire\n", " U=tirage_pf(N,p)\n", " X=trajectoire(U)\n", " plt.plot(X)\n", " \n", " # puis Nbre trajectoires de X\n", " Nbre=0\n", " for i in range(Nbre):\n", " U=tirage_pf(N,p)\n", " X=trajectoire(U)\n", " plt.plot(X);\n", " \n", "main_2()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Calcul exact de la probabilité" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "On va calculer exactement la probabilité de voir au moins $l$\n", "piles consécutifs." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Question 3" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ " Calculer la matrice de transition de la chaîne arrêté en $l$,\n", " l'implementer en __Python__. En déduire la probabilité d'avoir au\n", " moins $l$ pile consécutifs pour $l=0,\\ldots,20$. " ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "def proba(N,l,p):\n", " # Calcule la probabilite de voir au moins l piles consecutifs\n", " # dans N tirages a pile (p) ou face (1-p)\n", "\n", " # la matrice de transition de la chaîne arrêtée en l\n", " # est de taille (l+1,l+1)\n", " P=np.zeros((l+1,l+1)) # les indices varient de 0 à l.\n", " #P[0:l,0]= ... # attention 0:l = 0,1,...,l-1\n", " #P[0:l,1:l+1]= ... # attention 1:l+1 = 1,...,l\n", " #P[l,l]= ...\n", " ###### A vous de jouer .....\n", " \n", " # Sa puissance N ième\n", " PN=np.linalg.matrix_power(P,N)\n", " return PN[0,l]" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.810109599196358" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "l=5\n", "p=1/2\n", "proba(100,l,p)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Question 4" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Calculer la loi du nombre maximum de piles consécutifs." ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "def calculer_loi(N,p):\n", " MAXMAX=50;# a choisir assez grand (mais pas trop ...)\n", " loi=np.zeros(MAXMAX+1)\n", " \n", " previous=1;# proba d'avoir au moins 0 pile = 1 !\n", " # le support de la loi est [0,1,...,N] que l'on tronque en MAXMAX\n", " for l in range(min(N,MAXMAX)+1):\n", " # On doit calculer proba(N,l+1,p) - proba(N,l,p)\n", " \n", " ###### A vous de jouer .....\n", " return loi" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Comparer avec les simulations précédentes. Vérifier que\n", " $\\P(X=3)$ est du même ordre que $\\P(X=10)$." ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "def main_3():\n", " # On teste avec N=1 et N=2, p=1/2\n", " # Pour N=1, 0 pile avec proba 1/2 et 1 pile avec proba 1/2\n", " calculer_loi(1,1/2.0)\n", " # Pour N=2, on doit trouver (1/4,1/2,1/4) pour (0,1,2)\n", " calculer_loi(2,1/2.0)\n", " # en principe ca marche ...\n", " \n", " N=100;p=1.0/2.0\n", " loi=calculer_loi(N,p)\n", " print('=1?',sum(loi)) # on verifie que ca somme a 1\n", " \n", " # dessin\n", " plt.bar(range(21), loi[0:21])\n", " \n", " print(\"proba d'avoir 3 (ou moins) piles consécutifs: \",np.sum(loi[0:4]))\n", " print(\"proba d'avoir 10 (ou plus) piles consécutifs: \",np.sum(loi[10:20])) \n", " \n", " # comparaison avec les simulations\n", " Taille=10000;\n", " X=np.zeros(Taille);\n", " # On fait 10000 tirages\n", " for i in range(Taille):\n", " U=tirage_pf(N,p)\n", " X[i]=max_length(U)\n", " \n", " # on calcule l'histogramme empirique\n", " histo=np.zeros(21)\n", " for i in range(21):\n", " histo[i]=np.size(np.where(X==i))/(1.0*Taille)\n", " \n", " # on regarde si l'histogramme empirique de la question 1 est proche du calcul exact\n", " epsilon=np.linalg.norm(loi[0:20]-histo[0:20])\n", " # epsilon doit etre \"petit\", pour bien faire il faudrait faire un\n", " # test du |$\\xi^2$| pour savoir ce que \"petit\" veut dire ici.\n", " print(\"epsilon = \",epsilon,\" --- petit en principe.\")" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "=1? 0.9999999999999887\n", "proba d'avoir 3 (ou moins) piles consécutifs: 0.027284957701160018\n", "proba d'avoir 10 (ou plus) piles consécutifs: 0.044098128423184044\n", "epsilon = 0.007726224443254494 --- petit en principe.\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "main_3()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Test du critère" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Question 5" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Vérifier que, pour des tirages aléatoires, le test proposé (\"obtenir un run\n", "plus grand que $4$\") fonctionne dans la plupart des cas (dans $97\\%$ des cas!),\n", "mais pas toujours." ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [], "source": [ "def main_4():\n", "# Test du critère lorsque les tirages sont aléatoires\n", "# Ca marche \"souvent\" mais pas \"toujours\".\n", " N=100\n", " p=1/2.0\n", " Taille=100\n", " for i in range(Taille): \n", " U=tirage_pf(N,p);\n", " if (max_length(U) >= 4) :\n", " print(\"*\",end='')\n", " else:\n", " # Ca arrive \"rarement\" mais ca arrive 3 fois sur 100 quand même\n", " print(\"!\",end='')\n" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "***************!***************************************************************************!********" ] } ], "source": [ "main_4()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Par quelle loi peut on approximer la loi du nombre ce cas où le test ne fonctionne pas ?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Comment la loi varie t'elle en fonction de $N$ ?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "On regarde ce qui se passe lorsque $N$ devient grand." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Question 6" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "On va faire varier $N$ pour étudier (en fonction de $N$) la valeur $k$\n", "qui réalise le maximum de la probabilité d'apparition d'exactement\n", "$k$ piles consécutifs: on cherche le \"maximum de vraisemblance\" de la loi du \"run\n", " maximum\".\n", " \n", "On commencera par calculer la valeur réalisant le maximum et ce maximum\n", "pour $N=100$, $N=500$, $N=1000$." ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "def main_5():\n", "# Calcul du maximum de vraisemblance de la loi \n", "# imax = indice du maximum, m = le maximum\n", " p=1.0/2.0;\n", " print('N: [indice du maximum de vraisemblance] -> [valeur du maximum]\\n')\n", " for N in [10,100,1000]:\n", " loi=calculer_loi(N,p)\n", " # Il faut calculer l'indice du maximum de vraisemblance de la loi \n", " \n", " ###### A vous de jouer .....\n", " \n", " \n", " print (N,\": \",k,' -> ',m)\n" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "N: [indice du maximum de vraisemblance] -> [valeur du maximum]\n", "\n", "10 : 2 -> 0.3515625\n", "100 : 5 -> 0.26401597994641235\n", "1000 : 9 -> 0.23879124004379726\n" ] } ], "source": [ "main_5()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Question 7" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ " Vérifier que la moyenne du ''run maximum'' varie presque linéairement en\n", "fonction de $\\log(N)$." ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [], "source": [ "def moyenne(loi):\n", " return sum(range(np.size(loi)) * loi)\n", "#-------------------------------------------------------\n", "def main_5_bis():\n", "# La moyenne varie (approximativement) comme C log(N).\n", "# Ca peut se prouver.\n", " p=1.0/2.0\n", " valeurs=[10,50,100,500,1000,5000,10000]\n", " x=np.zeros(np.size(valeurs))\n", " y=np.zeros(np.size(valeurs))\n", " i=0\n", " for N in valeurs:\n", " loi=calculer_loi(N,p)\n", " # On veut tracer la courbe moyenne -> log(n)\n", " \n", " ###### A vous de jouer .....\n", " \n", " \n", " i=i+1\n", " plt.plot(x,y)" ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "main_5_bis()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Ca ressemble beaucoup à une droite mais ça n'en n'est pas une !" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Calcul du prix d'une option européenne dans le modèle de Cox-Ross" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Simulation du modèle" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "On considère le chaîne de Cox-Ross~:\n", "$$\n", "X_0=x_0, X_{n+1}= X_{n} \\left(u\\times\\inde{U_{n+1}=P}+d\\times\\inde{U_{n+1}=F}\\right).\n", "$$\n", "avec $N=10$, $x_0=100$, $p=1/2$, $u=1+1/N$, $d=1-1/N$.\n", "\n", "On cherche à calculer $\\E(f(X_N))$ où $f(x)=\\max(x-K,0)$ avec $K=100$." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Question 8" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Simuler cette chaîne de Markov." ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [], "source": [ "def simul_cox_ross(N,x_0,p,u,d):\n", " U=np.random.binomial(1,p,N) # tirages a pile ou face (p,1-p)\n", " X=np.zeros(np.size(U))\n", " X[0]=x_0;\n", " for i in range(np.size(U)-1):\n", " # simulation d'un étape pour le processus de Cox-Ross\n", " \n", " ###### A vous de jouer .....\n", " return X" ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [], "source": [ "def main_6():\n", " N=50\n", " sigma=0.3\n", " p=1.0/2.0;u=1.0-sigma/math.sqrt(N);d=1.0+sigma/math.sqrt(N)\n", " x_0=100\n", "\n", " X=simul_cox_ross(N,x_0,p,u,d)\n", " plt.plot(X)" ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "main_6()\n", "main_6()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Une version récursive de l'algorithme de calcul de prix" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Question 9" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Ecrire une version récursive de l'algorithme de calcul de prix. On recopie l'équation obtenue dans le cours.\n", "\n", "Tester l'algrithme pour $N$ petit ($N \\leq 10$). Vérifier que pour $N\\geq 20$ on risque d'attendre longtemps\n", "le résultat !" ] }, { "cell_type": "code", "execution_count": 41, "metadata": {}, "outputs": [], "source": [ "K=100;\n", "def f(x):\n", "# le payoff\n", " return max(x-K,0);\n", "#-------------------------------------------------------\n", "def prix_recursif(x,k,N,p,u,d):\n", " if (k==N):\n", " # on retourne le payoff\n", " return f(x)\n", " else:\n", " # on applique l'équation de programmation dynamique ...\n", " \n", " ###### A vous de jouer .....\n", "#-------------------------------------------------------\n", "def prix_slow(x,N,p,u,d):\n", " return prix_recursif(x,0,N,p,u,d)" ] }, { "cell_type": "code", "execution_count": 42, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "12.078135725435745" ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" } ], "source": [ "N=10;\n", "# On choisit des paramètres pour converger \n", "# vers le modèle de Black et Scholes.\n", "sigma=0.3;\n", "p=1.0/2.0;d=1.0-sigma/math.sqrt(N);u=1.0+sigma/math.sqrt(N)\n", "x_0=100\n", "prix_slow(x_0,N,p,u,d) # Recommencer avec N=20 pour savoir ce que slow veut dire !" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Une version itérative de l'algorithme de calcul de prix" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Question 10" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ " Ecrire une version efficace (itérative) de l'algorithme de calcul de prix. " ] }, { "cell_type": "code", "execution_count": 43, "metadata": {}, "outputs": [], "source": [ "def prix(x_0,N,p,u,d):\n", " U=np.zeros([N+1,N+1])\n", " for k in range(N+1):\n", " U[N,k] = f(x_0 * pow(u,k) * pow(d,N-k))\n", " for n in range(N-1,-1,-1): # le temps decroit de N-1 a 0\n", " for k in range(0,n+1): # [0:n]\n", " # progrmmation dynamique version éfficace\n", " \n", " ###### A vous de jouer .....\n", " return U[0,0]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ " Comparer le résultat des deux versions de l'algorithme." ] }, { "cell_type": "code", "execution_count": 44, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "12.078135725435752\n", "Différence entre les 2 résultats: 7.105427357601002e-15 \n", "\n" ] } ], "source": [ "def main_7():\n", " N=10\n", " sigma=0.3\n", " p=1.0/2.0\n", " d=1.0-sigma/math.sqrt(N)\n", " u=1.0+sigma/math.sqrt(N)\n", " K=100.0;x_0=100.0\n", "\n", " print(prix(x_0,N,p,u,d))\n", "\n", " # Les deux algos font ils le même chose ?\n", " # on verifie : prix_slow(x_0,N) \\approx prix(x_0,N)\n", " print (\"Différence entre les 2 résultats: \", abs(prix_slow(x_0,N,p,u,d) - prix(x_0,N,p,u,d)),\"\\n\")\n", "\n", "main_7()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Tracer la fonction $x\\to u(0,x)$ pour $x\\in [80,120]$." ] }, { "cell_type": "code", "execution_count": 45, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 45, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "sigma=0.6\n", "N=200\n", "d=1-sigma/math.sqrt(N)\n", "u=1+sigma/math.sqrt(N)\n", "p=1.0/2.0;\n", "\n", "largeur=100\n", "vmin=50\n", "courbe=np.zeros(largeur+1)\n", "x_values=np.arange(vmin,vmin+largeur+1)\n", "\n", "n=-1;\n", "for x in x_values:\n", " n=n+1\n", " # tracer de la courbe x -> prix(x)\n", " \n", " ###### A vous de jouer .....\n", "plt.plot(x_values,courbe)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Question 10" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Que constatez vous lorsque $N$ augmente ($N=10,100,200,500$) et\n", " que l'on choisit $u$ et $d$ en fonction de $N$ de la façon suivante:\n", "$$\n", " u=1+\\frac{\\sigma}{\\sqrt{N}}\\; \\mbox{ et }\\; d=1-\\frac{\\sigma}{\\sqrt{N}}.\n", "$$" ] }, { "cell_type": "code", "execution_count": 46, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "def main_8():\n", "# Avec cet algorithme on peut augmenter N\n", "# mais il faut renormaliser convenablement u et d pour\n", "# rester borné.\n", "# Essayer avec N=10,100,200,...,1000\n", " sigma=0.6\n", " largeur=50\n", " vmin=50\n", " courbe=np.zeros(largeur+1)\n", " x_values=np.arange(vmin,vmin+largeur+1)\n", " for N in [3,5,10,20,50,100,200]:\n", " d=1-sigma/math.sqrt(N)\n", " u=1+sigma/math.sqrt(N)\n", " p=1.0/2.0\n", " \n", " n=-1;\n", " for x in x_values:\n", " n=n+1;\n", " courbe[n]=prix(x,N,p,u,d)\n", " plt.plot(x_values,courbe)\n", " \n", " n=-1;\n", " for x in x_values:\n", " n=n+1\n", " courbe[n]=max(x-K,0)\n", " plt.plot(x_values,courbe)\n", " # Ca converge, mais vers quoi ? Vous verrez ça en 2A.\n", " \n", "main_8()\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Un cas plus délicat: les options sur moyenne" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "On cherche maintenant à évaluer $\\E(f(S_N))$ où $S_n=X_1+\\cdots+X_n$.\n", "\n", " Pourquoi le processus $(S_n,n\\geq 0)$ n'est il pas une chaîne de\n", " Markov ? Vérifier que le couple $((X_n,S_n),n\\geq 0)$ est une chaine\n", " de Markov de matrice de transition ($0$ sinon)\n", " $$\n", " P((x,s), (xu,s+xu))=p,\\quad P((x,s), (xd,s+xd))=1-p.\n", " $$\n", " issue de $(x_0,0)$ à l'instant $0$. En déduire que\n", " $\\E(f(S_N))=u(0,x_0,0)$ où $u$ est la solution unique de\n", " \\begin{equation}\\label{eq:rec}\n", " \\left\\{\n", " \\begin{array}{l}\n", " u(n,x) = p u(n+1,xu,s+xu) + (1-p) u(n+1,xd,s+xd),\\quad n< N\\\\\n", " u(N,x,s) = f(s),\n", " \\end{array}\n", " \\right. \n", " \\end{equation}\n", " \n", "Ecrire un algorithme récursif (lent) qui résoud l'équation précédente ($N\\leq 10$!) et permet\n", "de calculer $\\E(f(S_N))$. " ] }, { "cell_type": "code", "execution_count": 47, "metadata": {}, "outputs": [], "source": [ "def f_moy(x,s,N):\n", " return max((s/N)-K,0)\n", "\n", "def prix_moyenne(x,s,k,N,p,u,d):\n", " if (k==N):\n", " return f_moy(x,s,N)\n", " else:\n", " # écrire l'équation de programmation dynamique pour ce problème\n", " \n", " ###### A vous de jouer .....\n", " \n", "\n", "def prix_slow_moyenne(x,N,p,u,d):\n", " return prix_moyenne(x,x,0,N,p,u,d)" ] }, { "cell_type": "code", "execution_count": 48, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Prix option sur moyenne: 13.18627110107544 \n", "\n" ] } ], "source": [ "def main_9():\n", " N=10\n", " sigma=0.3\n", " p=1.0/2.0\n", " d=1.0-sigma/math.sqrt(N)\n", " u=1.0+sigma/math.sqrt(N)\n", " x_0=100.0;K=100.0\n", "\n", " # Ca marche mais ce n'est pas très efficace ...\n", " print('Prix option sur moyenne: ',prix_slow_moyenne(x_0,N,p,u,d),'\\n')\n", "\n", "main_9()" ] }, { "cell_type": "code", "execution_count": 49, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Aucun point n'est dupliqué.\n", "\n" ] } ], "source": [ "def liste_moyenne_rec(x,s,k,N):\n", "# On constitue la liste des points visités par la chaine\n", "# à l'instant N, en partant de (x,s) à l'instant k.\n", "# Si un point est visité deux fois, il y figure 2 fois.\n", " if (k==N):\n", " liste=[]\n", " liste.append([x,s])\n", " return liste\n", " else:\n", " liste_up = liste_moyenne_rec(x*u,s+x*u,k+1,N)\n", " liste_down = liste_moyenne_rec(x*d,s+x*d,k+1,N)\n", " liste_up.extend(liste_down)\n", " return liste_up\n", " \n", "def liste_moyenne(x,N):\n", " # On part de (x,s=x) a l'instant 0\n", " return liste_moyenne_rec(x,x,0,N)\n", "\n", "def main_10():\n", " x_0=100\n", " N=10\n", " liste=liste_moyenne(x_0,N)\n", "\n", " # Tri des points selon les valeurs de la somme.\n", " # Les valeurs de x peuvent etre egales, mais pas celle de s.\n", " # Nous allons le verifier.\n", " liste.sort();\n", "\n", " # On regarde si tous les points sont differents\n", " # en parcourrant le tableau ainsi classé\n", " epsilon=0.00001\n", " Taille=len(liste)\n", " match=[]\n", " for i in range(Taille-1):\n", " if (np.linalg.norm(np.asarray(liste[i]) - np.asarray(liste[i+1])) < epsilon):\n", " print ('Warning: (', liste[i][0],',',liste[i][1], ') ~ (',liste[i+1][0],',',liste[i+1][1],')\\n')\n", " match.append([liste[i][0],liste[i][1],liste[i+1][0],liste[i+1][1]])\n", " \n", " if len(match) == 0: \n", " print (\"Aucun point n'est dupliqué.\\n\")\n", " \n", "main_10()" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.2" } }, "nbformat": 4, "nbformat_minor": 2 }